module.exports = {
    returnArray(msg = 'error', code = -1, data = []) {
        (code == 200 || code == 1) && typeof msg !== 'string' && (data = msg) && (msg = 'success');
        return {code, msg, data};
    },
    /**
     * 返回时间戳
     * @returns {number}
     */
    time() {
        return (new Date()).getTime();
    },
    /**
     * 抛出异常
     * @param msg
     * @returns {*}
     */
    throwError(msg) {
        throw new Error(msg);
    },
    /**
     * 错误综合处理
     * @param error
     * @returns {{msg: string, code: number, data: *[]}}
     */
    errorHandle(error) {
        let code = -1, msg = error;
        if (typeof error === 'object') {
            if ('code' in error) {
                switch (error.code) {
                    case 'ER_BAD_FIELD_ERROR':
                        msg = error.sqlMessage
                        break;

                    case 1000:
                    case 1001:
                        code = error.code;
                        msg = error.message;
                        break;
                }
            } else if ('message' in error) {
                msg = error.message;
            } else {
                Object.keys(error).length || (msg = error.toString());
            }
        }

        return this.returnArray(msg, code);
    },
    isFunction(filed) {
        return Object.prototype.toString.call(filed) === "[object Function]";
    },
    isObject(filed) {
        return Object.prototype.toString.call(filed) === "[object Object]";
    },
    isArray(filed) {
        return Object.prototype.toString.call(filed) === "[object Array]";
    },
    isNumber(filed) {
        return Object.prototype.toString.call(filed) === "[object Number]";
    },
    isString(filed) {
        return Object.prototype.toString.call(filed) === "[object String]";
    },
    async isLogin() {

    }
}